//  封装常用功能

//获取云平台上的数据
const db = wx.cloud.database();
//定义查询时的所有操作方法
const _ = db.command;
//1.此方法用于查询数据库中的数据
//   collectionName   集合名称
//   where            查询条件
//   skip             跳过几条
//   limit            限制多少条
const find = function (collectionName, where = {}, skip = 0, limit = 20, targetType = "age", sort = "desc") {
  return new Promise((resolve, reject) => {
    db.collection(collectionName).where(where).skip(skip).limit(limit).orderBy
      (targetType, sort).get().then(res => {
        resolve(res);
      })
      .catch(err => {
        reject(err);
      })
  })
}
//云函数封装
//name   云函数名称
//data   要传递给云函数的数据
const callfun = function (name, data = {}) {
  return new Promise((resolve, reject) => {
    wx.cloud.callFunction({
      name,
      data
    }).then(res => {
      resolve(res);
    }).catch(err => {
      reject(err);
    })
  })
}



//转码base64
const tobase64 = function (imgFiles) {
  return new Promise((resolve, reject) => {
    let base64Arr = [];//用于装转码成base64后的图片路径
    if (imgFiles.length) {
      //开始转码
      imgFiles.forEach(item => {
        wx.getFileSystemManager().readFile({
          filePath: item,//选择图片的地址
          encoding: "base64",
          success: (res) => {
            base64Arr.push(res.data);
            if (base64Arr.length >= imgFiles.length) {
              // console.log(base64Arr);
              resolve(base64Arr);
            }
          }
        })
      })
    }
    else {
      wx.showTabBar({
        title: '错误',

      })
      return;
    }


  })
}

//上传文件到云存储
const uploadCloud = function(base64Arr){
  return new Promise((resolve,reject)=>{
    let fileID = [];//用于装云存储放回回来的fileID
    base64Arr.forEach(item=>{
      callfun("uploadFile",{
        base64Data:item
      }).then(res=>{
        //res就是上传图片成功后，云函数返回回来的fileID
        fileID.push(res.result.fileID);
        if(fileID.length>=base64Arr.length){
          resolve(fileID);
        }
        
      }).catch(err => {
        reject(err);
      })
      
    })
  })
}



module.exports = {
  find,
  _,
  callfun,
  tobase64,
  uploadCloud,
}